#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>

int main(int argc, char const *argv[])
{
    int i;
    for( i=0; i<4; ++i )
    {
        pid_t pid = fork();
        //printf("pid = %d", getpid() );
    }
    while(1)
    {
        sleep(1);
    }
    return 0;
}


/*
知识要点
    此程序执行结束后, 一共存在 16 个进程. （ 2的n次方， n为fork函数的个数）

    进程一 (未执行fork)
    进程一 (执行完第一个fork)                                        生成进程二 (从执行完第一个fork之后开始)
    进程一 (执行完第二个fork)  生成进程三 (从执行完第二个fork之后开始)    进程二 (执行完第二个fork)     生成进程四 (从执行完第二个fork之后开始)

    以此类推

知识要点:
 
    命令 ps -aux | grep a.out
    如果没有加 sleep(1), 可以看到 a.out的状态为 R+, 前台在运行状态的进程
    如果   加 sleep(1), 可以看到 a.out的状态为 S+, 表示这是一个前台休眠状态的进程

    命令 pstree -sp pid
    查看进程树
    

*/